package net.csdn.business.common.oauth2.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.csdn.business.common.domain.request.oauth.NewOauthClientInfoDTO;
import net.csdn.business.common.domain.request.oauth.NewOauthClientSecretDTO;
import net.csdn.business.common.domain.request.oauth.OauthClientInfoQuery;
import net.csdn.business.common.domain.request.oauth.UpdateOauthClientInfoDTO;
import net.csdn.business.common.domain.vo.oauth.OauthClientInfoVo;
import net.csdn.business.common.domain.vo.oauth.OauthStatVO;

import java.util.List;

/**
 * oauth应用管理Service接口
 * 
 * @author zhangyl
 * @date 2022-11-07
 */
public interface IOauthClientInfoService
{

    /**
     * 分页我创建的oauth应用列表
     *
     * @param query oauth应用管理详细信息
     * @return oauth应用管理
     */
    public Page<OauthClientInfoVo> findPageList(OauthClientInfoQuery query);

    /**
     * 分页查询已授权的oauth应用列表
     *
     * @param query oauth应用管理详细信息
     * @return oauth应用管理
     */
    public Page<OauthClientInfoVo> findAuthorizeList(OauthClientInfoQuery query);

    /**
     * 根据id查询oauth应用管理
     *
     * @param id oauth应用管理主键
     * @return oauth应用管理
     */
    public OauthClientInfoVo selectOauthClientInfoById(String id);

    /**
     * 根据id查询oauth应用管理详细信息
     * 
     * @param clientId oauth应用clientId
     * @return oauth应用管理
     */
    public OauthClientInfoVo selectClientByClientId(String clientId,Boolean isWithSecret);

    /**
     * 查询oauth应用管理列表
     * 
     * @param query oauth应用管理
     * @return oauth应用管理集合
     */
    public List<OauthClientInfoVo> selectOauthClientInfoList(OauthClientInfoQuery query);

    /**
     * 新增oauth应用管理
     * 
     * @param oauthClientInfo oauth应用管理
     * @return 结果
     */
    public String insertOauthClientInfo(NewOauthClientInfoDTO oauthClientInfo);


    /**
     * 重新生成oauth应用cientId
     *
     * @param params oauth应用管理
     * @return 结果
     */
    public String generateSecret(NewOauthClientSecretDTO params);
    /**
     * 修改oauth应用管理
     * 
     * @param params oauth应用管理
     * @return 结果
     */
    public Integer updateOauthClientInfo(UpdateOauthClientInfoDTO params);


    /**
     * 删除oauth应用管理信息
     * 
     * @param clientId oauth应用的clientId
     * @return 结果
     */
    public Integer deleteByClientId(String clientId);


    /**
     * 应用授权统计
     *
     * @param clientId oauth应用的clientId
     * @return 结果
     */
    public OauthStatVO authStat(String clientId);

   // public OauthClientInfoVo  getClientByClientId(String clientId);

}
